package entity

import (
	"time"
)

type News struct {
	Alias       string    `datastore:"alias"`
	Title       string    `datastore:"title,noindex"`
	Description string    `datastore:"description,noindex"`
	Content     string    `datastore:"content,noindex"`
	Source      string    `datastore:"source,noindex"`
	Thumb       string    `datastore:"thumb,noindex"`
	Doc         time.Time `datastore:"doc"`
	Category    []string  `datastore:"category,noindex"`
	Tags        []string  `datastore:"tags"`
}

func (n News) SearchTranform() NewsSearch {
	var searchObj NewsSearch
	searchObj.Alias = n.Alias
	searchObj.Title = n.Title
	searchObj.Description = n.Description
	searchObj.Content = n.Content
	searchObj.Source = n.Source
	searchObj.Thumb = n.Thumb
	searchObj.Doc = n.Doc
	var strCategory string = ""
	for _, e := range n.Category {
		strCategory += "/" + e + " "
	}
	searchObj.Category = strCategory
	var strTags string = ""
	for _, e := range n.Tags {
		strTags += "/" + e + " "
	}
	searchObj.Tags = strTags
	return searchObj
}

//It must be upper case because search of go will not load if this is lower case
type NewsSearch struct {
	Alias       string    `datastore:"Alias"`
	Title       string    `datastore:"Title,noindex"`
	Description string    `datastore:"Description,noindex"`
	Content     string    `datastore:"Content,noindex"`
	Source      string    `datastore:"Source,noindex"`
	Thumb       string    `datastore:"Thumb,noindex"`
	Category    string    `datastore:"Category,noindex"`
	Doc         time.Time `datastore:"Date"`
	Tags        string    `datastore:"Tags"`
}

type Category struct {
	Alias       string    `datastore:"alias"`
	Title       string    `datastore:"title,noindex"`
	Description string    `datastore:"description,noindex"`
	ParentAlias string    `datastore:"parentAlias"`
	Level       int       `datastore:"level"`
	Doc         time.Time `datastore:"doc"`
}

type CategoryRelationship struct {
	ID            string `datastore:"id"`
	CategoryAlias string `datastore:"categoryAlias"`
	NewsAlias     string `datastore:"newsAlias"`
}

type Tag struct {
	Alias string    `datastore:"alias"`
	Title string    `datastore:"title,noindex"`
	Doc   time.Time `datastore:"doc"`
}

type TagRelationship struct {
	ID        string `datastore:"id"`
	TagAlias  string `datastore:"tagAlias"`
	NewsAlias string `datastore:"newsAlias"`
}

type Template struct {
	ID       string `datastore:"id"`
	Home     string `datastore:"home,noindex"`
	Detail   string `datastore:"detail,noindex"`
	Category string `datastore:"category,noindex"`
	Tag      string `datastore:"tag,noindex"`
	Search   string `datastore:"search,noindex"`
	Time     string `datastore:"time,noindex"`
	Page     string `datastore:"page,noindex"`
	BaseUrl  string `datastore:"baseUrl,noindex"`
}

type Setting struct {
	ID                string `datastore:"id"`
	CurrentTemplateID string `datastore:"currentTemplateID,noindex"`
	SiteTitle         string `datastore:"siteTitle,noindex"`
	SiteName          string `datastore:"siteName,noindex"`
	SiteDescription   string `datastore:"siteDescription,noindex"`
	SiteKeyword       string `datastore:"siteKeyword,noindex"`
	SiteThumb         string `datastore:"siteThumb,noindex"`
	Analytic          string `datastore:"analytic,noindex"`
}
